home *** CD-ROM | disk | FTP | other *** search
- ;****************************************************************************
- ;* Module contenant des fonctions DOS de base pour réserver de la
- ;* RAM, ATTENTION toutes ces fonctions sont de type NEAR
- ;*
- ;* Programmé par Sébastien Granjoux
- ;* Commencé le 20/12/94
- ;* Modification le 02/01/95
-
- IDEAL
- P386N
-
- PUBLIC UNLOADMOD
-
- INCLUDE "CRYSLOAD.INC"
- INCLUDE "CRYSERR.INC"
-
- SEGMENT CSEG PARA PUBLIC USE16 'CODE'
-
- ASSUME cs:CSEG
-
- UsedFs DW 0
-
- ;***************************************************************************
- ;* Libère la mémoire prise par la fonction loadmod utilise en ds:di
- ;* l'adresse des instruments et en ds:si l'adresse de la partition
-
- PROC Unloadmod FAR
-
- push ds
-
- mov ax,SEG PatternSeg
- mov ds,ax
- mov ax,[ds:PatternSeg]
- or ax,ax
- je @@not_alloc
- mov es,ax
- call freemem
- @@not_alloc:
-
- mov bx,OFFSET Instrument1
- mov cl,MAX_INST
- @@sample:
- mov ax,[(INSTRUMENT PTR ds:bx).adrseg]
- or ax,ax
- je @@no_sample
- mov es,ax
- call freemem
- @@no_sample:
- add bx,SIZE INSTRUMENT
- dec cl
- jne @@sample
-
- pop ds
-
- ret
-
- ENDP
-
- ;**************************************************************************
- ;* ouvre un fichier suivant différent mode
- ;*
- ;* Entrée:
- ;* CS:BX adresse du driver de fichier à utiliser
- ;* DS:DX paramètre pour le driver (généralement nom du fichier)
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
-
- PROC open
-
- mov [cs:UsedFs],bx
- mov bx,[(FILESYS PTR cs:bx).open]
- jmp bx
- ENDP
-
- ;***************************************************************************
- ;* lit des informations dans un fichier
- ;*
- ;* Entrée:
- ;* CX nombre d'octet à lire
- ;* DS:DX pointeur sur le buffer
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
-
- PROC read
-
- mov bx,[cs:UsedFs]
- mov bx,[(FILESYS PTR cs:bx).read]
- jmp bx
-
- ENDP
-
- ;***************************************************************************
- ;* se déplace dans un fichier par rapport à la position courante
- ;*
- ;* Entrée:
- ;* CX:DX déplacement dans le fichier
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
-
-
- PROC seek
-
- mov bx,[cs:UsedFs]
- mov bx,[(FILESYS PTR cs:bx).seek]
- jmp bx
-
- ENDP
-
- ;***************************************************************************
- ;* Ferme un fichier
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
-
- PROC close
-
- mov bx,[cs:UsedFs]
- mov bx,[(FILESYS PTR cs:bx).close]
- jmp bx
-
- ENDP
-
-
- ;***************************************************************************
- ;* Reserve de la mémoire
- ;*
- ;* Entrée:
- ;* BX nombre de paragraphe à réserver
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
- ;* AX adresse de segment de la zone réservé
-
- PROC allocmem
-
- mov ah,48h
- int 21h
- ret
- ENDP
-
- ;***************************************************************************
- ;* Rend un bloc mémoire au système
- ;*
- ;* Entrée:
- ;* ES adresse de segment du bloc à rendre
- ;*
- ;* Sortie:
- ;* AX erreur si C=1
-
- PROC freemem
-
- mov ah,49h
- int 21h
- ret
-
- ENDP
-
- ;**************************************************************************
- ;* Recupère l'adresse du bloc d'environnement
- ;*
- ;* Sortie
- ;* AX adresse du bloc d'environnement
-
- PROC getenvadr FAR
-
- mov ah,62h
- int 21h
- mov es,bx
- mov ax,[es:2Ch]
- ret
-
- ENDP
-
- ENDS
- END